/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.controlador.CuentasPorPagar;

import aqu.bean.generico.BeanGenerico;
import aqu.persistencia.Dao.Contabilidad.ConCuentaManager;
import aqu.persistencia.Dao.CuentasPorPagar.CxpImpuestoManager;
import aqu.persistencia.Dao.CuentasPorPagar.CxpRetencionManager;
import aqu.persistencia.Dao.CuentasPorPagar.CxpTipoContribuyenteManager;
import aqu.persistencia.Dao.CuentasPorPagar.CxpTipoContribuyenteRetencionManager;
import aqu.persistencia.entity.ConCuenta;
import aqu.persistencia.entity.CxpImpuesto;
import aqu.persistencia.entity.CxpRetencion;
import aqu.persistencia.entity.CxpTipoContribuyente;
import aqu.persistencia.entity.CxpTipoContribuyenteRetencion;
import aqu.persistencia.utilidad.MessagesController;
import com.icesoft.faces.component.ext.RowSelectorEvent;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Verito Ramirez
 *         Victor Jaramillo
 */
@ManagedBean(name = "tipoContribuyenteRetencionController")
@ViewScoped
public class TipoContribuyenteRetencionController extends BeanGenerico {

    private CxpTipoContribuyenteRetencion tipoContribuyenteRetencion;
    private CxpTipoContribuyente tipoContribuyente;
    private CxpRetencion retencion;
    private ConCuenta cuenta;
    private CxpImpuesto impuesto;
    private List<CxpTipoContribuyenteRetencion> listaTipoContribuyenteRetenciones;
    private List<CxpTipoContribuyente> listaTipoContribuyentes;
    private List<CxpRetencion> listaRetenciones;
    private List<ConCuenta> listaCuentas;
    private List<CxpImpuesto> listaImpuestos;
    private CxpTipoContribuyenteRetencionManager tipoContribuyenteRetencionManager = new CxpTipoContribuyenteRetencionManager();
    private CxpTipoContribuyenteManager tipoContribuyenteManager=new CxpTipoContribuyenteManager();
    private CxpRetencionManager retencionManager=new CxpRetencionManager();
    private ConCuentaManager cuentaManager = new ConCuentaManager();
    private CxpImpuestoManager impuestoManager=new CxpImpuestoManager(); 
    private boolean panelvisible;


   
    public void switchTipoContribuyenteRetencion(CxpTipoContribuyenteRetencion tipoContribuyenteRetencion) {
        
        tipoContribuyente= tipoContribuyenteRetencion.getCxpCodigoTipCon();
        retencion=tipoContribuyenteRetencion.getCxpCodigoRet();
        cuenta=tipoContribuyenteRetencion.getConCodigoCue();
        impuesto=tipoContribuyenteRetencion.getCxpCodigoImp();

    }
    
    public TipoContribuyenteRetencionController() {

       tipoContribuyenteRetencion = new CxpTipoContribuyenteRetencion();
       tipoContribuyente=new CxpTipoContribuyente();
       retencion=new CxpRetencion();
       cuenta = new ConCuenta();
       impuesto=new CxpImpuesto();
       
       listaTipoContribuyenteRetenciones = tipoContribuyenteRetencionManager.getList();
       listaTipoContribuyentes= tipoContribuyenteManager.getList();
       listaRetenciones=retencionManager.getList();
       listaCuentas = cuentaManager.getList();
       listaImpuestos=impuestoManager.getList();
    }
    
        
    

    public ConCuenta getCuenta() {
        return cuenta;
    }

    public void setCuenta(ConCuenta cuenta) {
        this.cuenta = cuenta;
    }

    public ConCuentaManager getCuentaManager() {
        return cuentaManager;
    }

    public void setCuentaManager(ConCuentaManager cuentaManager) {
        this.cuentaManager = cuentaManager;
    }

    public List<ConCuenta> getListaCuentas() {
        listaCuentas = cuentaManager.getListOrdenado("conCodigoCue");
        return listaCuentas;
    }

    public void setListaCuentas(List<ConCuenta> listaCuentas) {
        this.listaCuentas = listaCuentas;
    }

    
    
    public List<CxpTipoContribuyenteRetencion> getListaTipoContribuyenteRetenciones() {
        listaTipoContribuyenteRetenciones = tipoContribuyenteRetencionManager.getListOrdenado("cxpCodigoTipConRet");
        return listaTipoContribuyenteRetenciones;
    }

    public void setListaTipoContribuyenteRetenciones(List<CxpTipoContribuyenteRetencion> listaTipoContribuyenteRetenciones) {
        this.listaTipoContribuyenteRetenciones = listaTipoContribuyenteRetenciones;
    }

    public CxpTipoContribuyenteRetencion getTipoContribuyenteRetencion() {
        return tipoContribuyenteRetencion;
    }

    public void setTipoContribuyenteRetencion(CxpTipoContribuyenteRetencion tipoContribuyenteRetencion) {
        this.tipoContribuyenteRetencion = tipoContribuyenteRetencion;
    }

    public CxpTipoContribuyenteRetencionManager getTipoContribuyenteRetencionManager() {
        return tipoContribuyenteRetencionManager;
    }

    public void setTipoContribuyenteRetencionManager(CxpTipoContribuyenteRetencionManager tipoContribuyenteRetencionManager) {
        this.tipoContribuyenteRetencionManager = tipoContribuyenteRetencionManager;
    }

    public CxpImpuesto getImpuesto() {
        return impuesto;
    }

    public void setImpuesto(CxpImpuesto impuesto) {
        this.impuesto = impuesto;
    }

    public CxpImpuestoManager getImpuestoManager() {
        return impuestoManager;
    }

    public void setImpuestoManager(CxpImpuestoManager impuestoManager) {
        this.impuestoManager = impuestoManager;
    }

    public List<CxpImpuesto> getListaImpuestos() {
        listaImpuestos = impuestoManager.getList();
        return listaImpuestos;
    }

    public void setListaImpuestos(List<CxpImpuesto> listaImpuestos) {
        this.listaImpuestos = listaImpuestos;
    }

    public List<CxpRetencion> getListaRetenciones() {
        listaRetenciones = retencionManager.getList();
        return listaRetenciones;
    }

    public void setListaRetenciones(List<CxpRetencion> listaRetenciones) {
        this.listaRetenciones = listaRetenciones;
    }

    public List<CxpTipoContribuyente> getListaTipoContribuyentes() {
        listaTipoContribuyentes = tipoContribuyenteManager.getList();
        return listaTipoContribuyentes;
    }

    public void setListaTipoContribuyentes(List<CxpTipoContribuyente> listaTipoContribuyentes) {
        this.listaTipoContribuyentes = listaTipoContribuyentes;
    }

    public CxpRetencion getRetencion() {
        return retencion;
    }

    public void setRetencion(CxpRetencion retencion) {
        this.retencion = retencion;
    }

    public CxpRetencionManager getRetencionManager() {
        return retencionManager;
    }

    public void setRetencionManager(CxpRetencionManager retencionManager) {
        this.retencionManager = retencionManager;
    }

    public CxpTipoContribuyente getTipoContribuyente() {
        return tipoContribuyente;
    }

    public void setTipoContribuyente(CxpTipoContribuyente tipoContribuyente) {
        this.tipoContribuyente = tipoContribuyente;
    }

    public CxpTipoContribuyenteManager getTipoContribuyenteManager() {
        return tipoContribuyenteManager;
    }

    public void setTipoContribuyenteManager(CxpTipoContribuyenteManager tipoContribuyenteManager) {
        this.tipoContribuyenteManager = tipoContribuyenteManager;
    }

   
    
    
    
    
    public boolean isPanelvisible() {
        return panelvisible;
    }

    public void setPanelvisible(boolean panelvisible) {
        this.panelvisible = panelvisible;
    }

    public void llamarPanelvisible(ActionEvent event) {
        panelvisible = !panelvisible;
    }

    public void nuevo(ActionEvent actionEvent) {
        tipoContribuyenteRetencion = new CxpTipoContribuyenteRetencion();
        tipoContribuyente=new CxpTipoContribuyente();
        retencion=new CxpRetencion();
        cuenta=new ConCuenta();
        impuesto=new CxpImpuesto();
    }

    public String eliminar() {
        try {
            CxpTipoContribuyenteRetencion TipoContribuyenteRetencionTemp = (CxpTipoContribuyenteRetencion) (tipoContribuyenteRetencion);
            if (tipoContribuyenteRetencionManager.delete(TipoContribuyenteRetencionTemp) == false) {
                llamarPanelvisible(null);
            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
        return "index";
    }

    public void insertar(ActionEvent actionEvent) {
        try {
            tipoContribuyenteRetencion.setCxpCodigoTipConRet(MessagesController.obtenerkeyautomaticosinceros("cxp_tipoContribuyenteRetencion", "CXP_CODIGO_TIPCONRET"));
            tipoContribuyenteRetencion.setCxpCodigoTipCon((CxpTipoContribuyente) tipoContribuyenteManager.getElementById(tipoContribuyente.getCxpCodigoTipCon()));
            tipoContribuyenteRetencion.setCxpCodigoRet((CxpRetencion) retencionManager.getElementById(retencion.getCxpCodigoRet()));
            tipoContribuyenteRetencion.setConCodigoCue((ConCuenta) cuentaManager.getElementById(cuenta.getConCodigoCue()));
            tipoContribuyenteRetencion.setCxpCodigoImp((CxpImpuesto) impuestoManager.getElementById(impuesto.getCxpCodigoImp()));
            

            if (tipoContribuyenteRetencionManager.create(tipoContribuyenteRetencion) == false) {
                llamarPanelvisible(null);
            }
            tipoContribuyenteRetencion = new CxpTipoContribuyenteRetencion();
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
    }

    public void modificar(ActionEvent actionEvent) {
        try {
            tipoContribuyenteRetencion.setCxpCodigoTipCon((CxpTipoContribuyente) tipoContribuyenteManager.getElementById(tipoContribuyente.getCxpCodigoTipCon()));
            tipoContribuyenteRetencion.setCxpCodigoRet((CxpRetencion) retencionManager.getElementById(retencion.getCxpCodigoRet()));
            tipoContribuyenteRetencion.setConCodigoCue((ConCuenta) cuentaManager.getElementById(cuenta.getConCodigoCue()));
            tipoContribuyenteRetencion.setCxpCodigoImp((CxpImpuesto) impuestoManager.getElementById(impuesto.getCxpCodigoImp()));
            
            
            if (tipoContribuyenteRetencionManager.update(tipoContribuyenteRetencion) == false) {
                llamarPanelvisible(null);
            }
        } catch (Exception e) {
            MessagesController.addInfo("Mensaje de error :", e.getMessage());
            llamarPanelvisible(null);
        }
    }

    public void rowSelectionListener(RowSelectorEvent event) {
        tipoContribuyenteRetencion = listaTipoContribuyenteRetenciones.get(event.getRow());
        switchTipoContribuyenteRetencion(tipoContribuyenteRetencion);
    }   
    
}